export default class Scanner {
  constructor (str) {
    this.templatestr = str;
    // 遍历指针
    this.pos = 0;
    // 指针及右边的字符串
    this.tail = str;
  }

  eos () {
    return this.pos >= this.templatestr.length;
  }

  // 指针跳过大括号
  scan (tag) {
    if (this.tail.indexOf(tag) == 0) {
      this.pos += tag.length;
      this.tail = this.templatestr.substring(this.pos);
    }
  }

  // 指针扫描到大括号停止，返回经过的文字
  scanUntil (stopTag) {
    const startPos = this.pos;
    // 遍历字串，找到 stopTag
    while (!this.eos() && this.tail.indexOf(stopTag) != 0) {
      this.pos++;
      this.tail = this.templatestr.substring(this.pos);
    }
    return this.templatestr.substring(startPos, this.pos);
  }
}
